package com.orcwar.engine.level;

import java.util.List;

import com.orcwar.engine.OWMap;
import com.orcwar.engine.OWPlayer;
import com.orcwar.engine.OWTile;
import com.orcwar.engine.OWUnit;
import com.orcwar.engine.level.OWLevelBuilder.OWLevelParameters;

/**
 * @author baaleze
 * 
 */
public interface ILevelGenerator {

	/**
	 * Builds the tiles of the map : generates the tile types.
	 * 
	 * @param owLevelParameters
	 * @return
	 */
	List<List<OWTile>> buildTiles(OWLevelParameters owLevelParametersList,
			int nbEnemies, int nbPlayerUnits);

	/**
	 * Places units on a map, in a given zone.
	 * 
	 * @param tiles
	 * @param units
	 * @param zone
	 */
	void placeUnits(OWMap map, List<OWUnit> enemies, List<OWUnit> Playerunits,
			OWLevelParameters owLevelParameters);

	/**
	 * Builds the enemies from the difficulty of the level, with class and
	 * items.
	 * 
	 * @param owLevelParameters
	 * @param player
	 * @return
	 */
	List<OWUnit> buildEnemies(OWLevelParameters owLevelParameters,
			OWPlayer player);

}
